{
 "cells": [
  {
   "cell_type": "markdown",
   "source": [
    "Chapter 06\n",
    "# 线性回归\n",
    "Book_1《编程不难》 | 鸢尾花书：从加减乘除到机器学习"
   ],
   "metadata": {
    "collapsed": false
   }
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "outputs": [],
   "source": [
    "# 导入包\n",
    "import random\n",
    "import statistics\n",
    "import matplotlib.pyplot as plt"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "start_time": "2024-07-02T22:07:47.848033Z",
     "end_time": "2024-07-02T22:07:48.299882Z"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "outputs": [],
   "source": [
    "# 产生数据\n",
    "num = 50\n",
    "random.seed(0)\n",
    "x_data = [random.uniform(0, 10) for _ in range(num)]\n",
    "# 噪音\n",
    "noise = [random.gauss(0, 1) for _ in range(num)]\n",
    "y_data = [0.5 * x_data[idx] + 1 + noise[idx]\n",
    "          for idx in range(num)]"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "start_time": "2024-07-02T22:07:57.458587Z",
     "end_time": "2024-07-02T22:07:57.486305Z"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "outputs": [
    {
     "data": {
      "text/plain": "<Figure size 640x480 with 1 Axes>",
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAcAAAAG2CAYAAADoXlavAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/SrBM8AAAACXBIWXMAAA9hAAAPYQGoP6dpAAAq60lEQVR4nO3df3TU9Z3v8dckhAloEkmQJChgxB8YgiI/YgW3whqEqlRve6yt4KHY9fRgWA3Z41XbiylWQWoLnFpvFHe1Hlmq3XqoP6r0BERYVpQYDBcuCGpRuRiIEEgkKWHMzP2DnUjIJPlOMjPf72c+z8c5Oaf5ZpK897NxXnx++0KhUEgAAFgmxe0CAABwAwEIALASAQgAsBIBCACwEgEIALASAQgAsBIBCACwEgEIALASAQgAsBIBCACwkjEB2NbWpoULF6qgoEADBgzQyJEj9ctf/lKc5AYA6I1+bhfg1NKlS1VZWannn39eo0eP1vvvv6+5c+cqKytL99xzj9vlAQAM4zPlMOybbrpJubm5+rd/+7f2Z9///vc1YMAArVq1ysXKAAAmMqYHOGnSJK1cuVJ79+7VJZdcou3bt2vz5s1atmxZl9/T2tqq1tbW9s+DwaAaGhqUk5Mjn8+XiLIBADESCoX01VdfaejQoUpJicEMXsgQbW1tofvvvz/k8/lC/fr1C/l8vtDixYu7/Z6KioqQJD744IMPPpLoY//+/THJFWOGQF988UXdd999evzxxzV69GjV1taqrKxMy5Yt05w5cyJ+z5k9wMbGRg0fPlx79+5VdnZ2oko3TiAQ0IYNGzR16lSlpaW5XY4n0UbO0E7O0E7ONDQ06JJLLtGxY8eUlZXV559nzBDofffdpwceeEA//OEPJUljxozRZ599piVLlnQZgH6/X36/v9Pz7Oxs5eTkxLVekwUCAQ0cOFA5OTn8x9gF2sgZ2skZ2ik6sZrCMmYbREtLS6cx39TUVAWDQZcqAgCYzJge4MyZM/Xoo49q+PDhGj16tD744AMtW7ZMd955p9ulAQAMZEwAPvHEE1q4cKHuvvtu1dfXa+jQofrpT3+qhx56yO3SAAAGMiYAMzIytGLFCq1YscLtUgAAScCYOUAAAGKJAAQAWIkABABYiQAEAFiJAAQAWIkABABYiQAEAFiJAAQAWIkABABYiQAEAFiJAAQAWIkABABYiQAEAFiJAAQAWIkABABYyZj7AAEA7mkLhrR1X4PqvzqhIRnpKi7IVmqKz+2y+oQABAB0a+3OOi16bZfqGk+0P8vPSlfFzELNKMp3sbK+YQgUANCltTvrNG/Vtg7hJ0kHG09o3qptWruzzqXK+o4ABABE1BYMadFruxSK8LXws0Wv7VJbMNIrvI8ABABEtHVfQ6ee3+lCkuoaT2jrvobEFRVDBCAAIKL6r7oOv968zmsIQABAREMy0mP6Oq8hAAEAERUXZCs/K11dbXbw6dRq0OKC7ESWFTMEIAAgotQUnypmFkpSpxAMf14xs9DY/YAEIACgSzOK8lU5e5zysjoOc+Zlpaty9jij9wGyER4A0K0ZRfmaVpjHSTAAAPukpvh09cgct8uIKYZAAQBWIgABAFYiAAEAViIAAQBWIgABAFYiAAEAViIAAQBWIgABAFYiAAEAViIAAQBWIgABAFYiAAEAViIAAQBWIgABAFYiAAEAViIAAQBWIgABAFYiAAEAViIAAQBWIgABAFYiAAEAViIAAQBWIgABAFYiAAEAViIAAQBWIgABAFYiAAEAViIAAQBW6ud2AQCAnrUFQ9q6r0H1X53QkIx0FRdkKzXF53ZZRiMAAcDj1u6s06LXdqmu8UT7s/ysdFXMLNSMonwXKzMbQ6AA4GFrd9Zp3qptHcJPkg42ntC8Vdu0dmedS5WZjwAEAI9qC4a06LVdCkX4WvjZotd2qS0Y6RXoCQEIAB61dV9Dp57f6UKS6hpPaOu+hsQVlUQIQADwqPqvug6/3rwOHbEIBgA8akhGekxf1xvJvPqUAAQAjyouyFZ+VroONp6IOA/ok5SXdSqU4iHZV58aNQR64MABzZ49Wzk5ORowYIDGjBmj999/3+2yACAuUlN8qphZKOlU2J0u/HnFzMK49MhsWH1qTAAePXpUkydPVlpamt58803t2rVLv/nNbzRo0CC3SwOAuJlRlK/K2eOUl9VxmDMvK12Vs8fFpSdmy+pTY4ZAly5dqmHDhum5555rf1ZQUOBiRQCQGDOK8jWtMC9hc3HRrD69emROXGpIBGMC8NVXX9X06dN16623auPGjTrvvPN0991366677urye1pbW9Xa2tr+eVNTkyQpEAgoEAjEvWZThduGNuoabeQM7fSNtmBINZ8d1eHjrRp8tl/jRwxqDzCn7TRheKakTElSsO1rBdviU2t9Y7P8qT337uobmxUIZManiAhi/XfkC4VCRvRh09NPdf/Ly8t16623qrq6Wvfee6+eeuopzZkzJ+L3/OIXv9CiRYs6PV+9erUGDhwY13oBALHV0tKi22+/XY2NjcrM7HvwGhOA/fv314QJE/TOO++0P7vnnntUXV2tLVu2RPyeSD3AYcOGqa6uTjk55nbb4y0QCKiqqkrTpk1TWlqa2+V4Em3kDO0krdt9SAtequ00nxYevFx+21hde1G2p9qpLRjS9BWbdKip69WnuZnp+mvZtxO6JeLIkSPKz8+PWQAaMwSan5+vwsLCDs8uu+wyvfzyy11+j9/vl9/v7/Q8LS3NE39kXkc79Yw2csbWdmoLhvTwX/boRFvkkPBJevgve7Sh/B8keaed0iQ9eONozVu1TZI6hGD4/5IHbxytdH//xNYV47YxZhXo5MmTtWfPng7P9u7dqxEjRrhUEQB0z+likprPjiauKIfcWH2aaMb0ABcsWKBJkyZp8eLF+sEPfqCtW7dq5cqVWrlypdulAUBETo8oO3y8tecXuSDRq08TzZgAnDhxotasWaMHH3xQDz/8sAoKCrRixQrNmjXL7dIAICKnR5QNPtuvw3GupbdSU3xGb3XojjEBKEk33XSTbrrpJrfLAABHnB5lNn7EIP11d6KrgzFzgABgGjePMkPPCEAAiCMbFpOYyqghUAAwUbIvJjEVAQgACZDMi0lMRQACgOGS+dLaeCIAAcBgyX5pbTyxCAYADGXDpbXxRAACgIFsubQ2nghAADBQNJfWIjICEAAM5PScUaevsxEBCAAGcnrOqNPX2YgABAADhc8Z7Wqzg0+nVoMWF2QnsiyjEIAAYKBkPWe0LRjSlk+O6JXaA9ryyZG4LuJhHyAA/DfTNpSHzxk9cx9gnqH7ABO9p5EABACZu6Hc6TmjXg/38J7GM/t74T2NlbPHaWJ+/5j+TgIQgPWcvPl6OQR7OmfU6+He055Gn07taXzln66I6e9lDhCA1Xp68w1J+vmanTr5dTDBlcWGCafFON3TWLv/WEx/LwEIwGo9vflK0pHmk/rWknWeCItomHJajNO9ikeOt8b09xKAgAESuTLONk7ffBuaA57pMTllymkxTvcq5pztj+nvZQ4Q8Divz9+YLtqN4ote26VphXmeWkDSFVNOiwnvaTzYeCJib9WnUytbxw47J6a/lx4g4GEmzN+YrqcN5afzSo/Jqb6cFpPIUQe39jQSgIBHmTJ/Y7rT33ydcrvH5FRvT4tZu7NO1yx9Sz965l3d+2KtfvTMu7pm6Vtx/QdXeE9jXlbHMM7LSo/bKlyGQAGPimb+prsl8OhZ+M33Z2t2qqH5ZI+vN+V8zXC4z1u1TT6pwz+muupZJWpLSKR9iU73NMYKAQh4lCnzN8liRlG+/nFUrr61ZJ0amgMRXxOeizLpfM1oTotxuh+vr3OgPc1rJ+ofdAQg4FGc9p94/fulaPH/GKN5q7ZJctZjMoHTnlUiRh28dOgAc4CAR3HavzvcmItKhPBpMTePPU9Xj8yJGOLxHnXw2rw2PUDAo3ozf4PYSPRclFfEe9TBa/Pa9AABD0vW3ogJnPSYkk28Rx28Nq9NDxDwOFt7I0i8eI86eG1emx4gYAAbeyNwRzxHHYoLsnXOwLRuXzNoYFrC5rXpASIpeP2uM8Akbo46JPJYBwIQxuOsTCD2erpjsDe27mvQsZbIeyzDjrUEWAQDOMFZmYA5vLYIhgCEsby2pwjoq637GpL6yiuvLYJhCBTG8tqeIqC31u0+JEm68/lqtbadmmdLxmF8p9ceJWoRDD1AGMtrwylAb6zdWacFL9V2eu6lYfxYXY3k1rVHXaEHCGN5bTgFiFaiDp/ui1gvMovmcO54IwBhLK8NpwDRCg/j+1Mjf93tYfx4HVztlcMdGAKFsbw2nAJEy8vD+PFeZOaFwx0IQBiNszJhMi8P40ezyMxUDIHCeF4ZTgGiFR7GP3r87xG/7uYwvpd7p7FCACIpxOPUCiDewsP4ZX+o6fQ1t4fxvdw7jRWGQAHARTOK8rX8trGdnrs9jG/Dhcz0AAHAZSWX5eqNfdKzcybqcMvXnhjGt+FCZgIQAPogljeRFBdkKy2t++uCEslLe/bigQAEgF6y4SaSZF5kRgACQC/Ea5O4FyXrIjMWwQBAlLiJJDkQgAAQpWTfJB6rw6+9jiFQAIhSMm8St2FeM4weIABEKZ6bxN3sfYXnNc/s3XrpaqZYogcIAFGK100k63Yf0sN/2eNK78uEq5lijR4gAEQpXjeRLHip1rXeV7LPa0ZCAAJAL8TyJpLwMKebq0qTeV6zKwyBAkAvxWqTeM1nR7v9eiIuxrXh8OszEYAA0Aex2CR++Hiro9fFs/cVr3lNL2MIFABcNvhsv6PXxbP3Fa95TS8jAAHAZeNHDJLUOXjCEnX1UCznNU3AECgAuOz0XpXbVw8l8+HXZyIAAcAjlt82ttM+QDeuHkrWw6/PRAACgEeUXJar64vOs6L35QUEIAB4iC29Ly9gEQwAwErGBuBjjz0mn8+nsrIyt0sBAM+y5Wqj3jByCLS6ulpPP/20Lr/8crdLAQDPinS1UfZZaXrk5iLdcPlQFyvzBuN6gMePH9esWbP0zDPPaNCgQW6XAwCe1NXVRg3NAd29+gMteWOXS5V5h3E9wNLSUt14440qKSnRI4880u1rW1tb1dr6zRFDTU1NkqRAIKBAIBDXOk0WbhvaqGu0kTO0kzOxbqe2YEhL/vJ/1T+16+HO3//X33T50ExdPzo3Jr8zEWL9d2RUAL744ovatm2bqqurHb1+yZIlWrRoUafnGzZs0MCBA2NdXtKpqqpyuwTPo42coZ2ciWU7lY/q+TVff1ajNz6L2a+Mu5aWlpj+PF8oFDJiRnT//v2aMGGCqqqq2uf+pkyZorFjx2rFihURvydSD3DYsGGqq6tTTg7LjLsSCARUVVWladOmKS0tze1yPKmrNlq3+5Aee/NDHWw6bSNzZroe+M4olVxmzr+0Y4W/JWdi3U5v7KjT/3z5/zh67bNzJhpzwPWRI0eUn5+vxsZGZWZm9vnnGdMDrKmpUX19vcaNG9f+rK2tTZs2bdLvfvc7tba2KjU1tcP3+P1++f2dD5lNS0vjP0YHaKeend5Ga3fW6e7V2//7GKtvNi5/frRVd6/enpRnKTrF35IzsWqnIVlnqbXN2eb5wy1fG/P/m1jXaUwAXnfdddqxY0eHZ3PnztWoUaN0//33dwo/IJHagiEtem1Xlxea+nTqQtNphXmc6oG4Ky7IVvZZaWpo7nnOLJnu94uWMQGYkZGhoqKiDs/OOuss5eTkdHoOJNrWfQ2dVtudLhEXmsI9bcGQp44vS03x6ZGbi3T36g+6fV0ibpjwMmMCEMnNa28g0XJ6UWk8LzSFOyLttct34QDrM91w+VD99P8d09Ob9kX8uk/Jd79ftIwOwLffftvtEhADXn0DiYbTYSSbh5uSUXiv3ZlD3wcbT2jeqm2uz/s+eEOhrjh/kP7XKzvV0Hyy/blp/33Fi9EBCPN5/Q3EqeKCbOVnpetg44mI84A+nbrWxubhpmRjyrzvDZfna3qRHff7Rcu4k2CQPHp6A5FOvYGYcHZhaopPFTMLJXW+1TvRF5oiMaKZ93Vb+IaJm8eep6tH5vB3+N8IQLjGpDcQJ2YU5aty9jjlZXUc5szLSjemJwvnmPc1H0OgcE0yvoHMKMrXtEKGm2zAvK/5CEC4JlnfQLjQ1A7M+5qPIVC4JvwG0lXfyCf2KcG7mPc1HwEI1/AG4j0mXp7qZs3M+5qNIVC4KvwGcuY+wDz2KSWcifsxvVAz877mIgDhOt5A3Gfifsyeai4ruUQXDB6YkL8n5n3NRADCE3gDcY/TDd3/OCpXNZ8d9cQ/UpzsIV2+bm/7M6/3ZOEOAhCwnNP9mN9ast4zx2n1VPOZvNyThXtYBANYzuk+y9PDT/omVNburItHWd2Kdm+oaScLITEIQMByvd1n6Wao9KZm004WQvwRgDCCicvzTdHTfszuuBUqfanZpJOFEF/MAcLzvLDUPZmF92POW7VNPiniwpKeJDpU+lKzaScLIX7oAcLTwkvdz1zw4Ob8U294vQfb1Ybu7LPSHH2/G6HSVc1d4WQhnIkeIDzLlPvWemJKDzbSfszxIwbp2sc3ePa8yzNr/vRws5av+6hTr5CThRAJAQjPiua6JK/uITRtg3mk/ZhdDTV6JVTOrPnSvAxOFoIjBCA8y/TrkpKlB2vacXWcLASnCEB4lunXJSVDDzYs1qHSFgzFNaA4WQhOEIDwLNPvWzO9B3umWIWKKXOiSH6sAoVnmX5dkuk92HhIllW9SA4EIDzN5PvWuPC3IycHWHNUGRKJIVB4nqmLGrrbrB1tD7arObN4z6XFUjLNiSI5EIAwgqmLGmKxgrKrObPvXpGvV7fXGTOXlmxzojAfAQjEWV96sF3tI6xrPKGnN+3r9Hqv7i+UmBOF9xCAQAL0pgfb3ZxZV7y8v9D0Vb1IPlEvgpkzZ442bdoUj1oAnCbaS1/DvHrtj+mrepF8og7AxsZGlZSU6OKLL9bixYt14MCBeNQFGGHrvoa4HXBdtetgn77fi3NpJq/qRfKJegj0z3/+s7788ku98MILev7551VRUaGSkhL95Cc/0c0336y0NGenxwMmW7f7kCTpzuer1dp2qscSywUoa3fW6dn/+rRPP8Orc2mmrupF8unVPsBzzz1X5eXl2r59u9577z1ddNFFuuOOOzR06FAtWLBAH330UazrBDxj7c46LXipttPzWG3mDs/99ZYJ+wvDc6I3jz1PV4/MIfzgij5thK+rq1NVVZWqqqqUmpqqG264QTt27FBhYaGWL18eqxoBz0jEZu7ezv1JzKUB0Yg6AAOBgF5++WXddNNNGjFihP7jP/5DZWVl+uKLL/T8889r3bp1+uMf/6iHH344HvUCropmM3dvOZ27u27UucpnLg3otajnAPPz8xUMBvWjH/1IW7du1dixYzu9ZurUqTrnnHNiUB7QkdsnnyRiM7fTubt/+oeRKi7IZi4N6KWoA3D58uW69dZblZ7e9X+k55xzjvbt67xJF+gLL9wikIjN3NHslzP1hBzAC6IeAr3jjju6DT/gTG3BkLZ8cqRP2wW8cotAIg64Zr8ckBicBIO4ikWvzUs3q4fDqewPNZ2+FstwMukWdreHpYHeIgARU6e/GX56uFnL13XeEhPteZVeu0VgRlG+lt82Vif3dQzBWIeTCfvlvDAsDfQWAYiYifRmGEm0vTYv3iJQclmu3tgnPTtnog63fB23cPLyHF9XB3Wf/g+c6y4d7EptgBMEIGKiqzfDrkTTa/PyLQLFBdlWnn7kdFh6ysX/kODKAOe4ER591ptbC8Kc9Nq4Wd17nA5L13x2NHFFAVEiANFnfTm5xEmvjVWR3uN0uPnw8dY4VwL0HgGIPuvN3Fu0vTZuEfAWp8PNg8/2x7kSoPeYA0SfRTv31ttemwmrIm3hdLP++BGD9Nfdia4OcIYeIPqspzm6M/Wl18YtAt7AsDSSAT1A9Fn4zXDeqm3ySR16BOG3v7KSS3TB4IH02pKIk836gUDAxQqB7hGAiAmTTi5B7DAsDZMRgIgZ3gzt5OXN+kB3CEDEFG+G7uJcTsA5AhBIEpzLCUSHVaBAEvDKdVGASQhAwHA9ncspnTqXszf3MALJzMoArPnsKG8GSBrRXBcF4BtWBuDdq7fpmqVvMSyEpODF66IAE1gZgBJzI0geXr4uCvAyawOQuREkC66LAnrH2gCUmBtBcuBcTqB3rA7AMOZGYDquiwKix0Z4MTeC5MBRdEB0rA7A8J1lNs+NRDo6C+biKDrAOWsDkLmRro/OeujGS12sCgASw9o5QNvnRro7OmvBS7XuFIWk1hYMacsnR/RK7QFt+eQIq6/hOit7gP/79nG6buxIa3t+To7OCr8uLVFFIamt231ID/9lDwd1w1OM6QEuWbJEEydOVEZGhoYMGaJbbrlFe/bs6dXPGj9ikLXhJzk7Oks6dWQcEAsLXqrloG54jjEBuHHjRpWWlurdd99VVVWVAoGArr/+ejU3N7tdmnGcbvs4fLw1zpUg2YWHOTmoG15kzBDo2rVrO3z++9//XkOGDFFNTY2+/e1vu1SVmZxu+xh8tj/OlSDZ9TSKcPphFKxeRaIZE4BnamxslCRlZ3e9bL+1tVWtrd/0YpqamiRJgUBAgUAgvgV62JXnZ2jEIL8ONZ2I+C/z9JRTT68472yr26k74Xahfbp3uKlFkuRP6b6HV9/YrEAgMxEleRJ/T87Eun18oVDIuLGHYDCo7373uzp27Jg2b97c5et+8YtfaNGiRZ2er169WgMHDoxniQCAGGtpadHtt9+uxsZGZWb2/R9MRgbgvHnz9Oabb2rz5s06//zzu3xdpB7gsGHDVFdXp5wchlvW7T6kx978UAebvpkTzMtM1/3TL1bgs1pNmzZNaWmsA40kEAioqqqKNupB68mTWr9unR56P0Ungp0Xnvkk5Wam669l37Z6YRp/T84cOXJE+fn5MQtA44ZA58+fr9dff12bNm3qNvwkye/3y+/vPI+VlpbGH5mk71x+vq4vOq/TSTDBtq/1xme1tJMDtJEzrUGfTrb5Ogy5h+PuwRtHK93f342yPIe/p+7Fum2MCcBQKKR//ud/1po1a/T222+roKDA7ZKSQqSjs4JtLhWDpLX8trGd9gHmsQ8QLjMmAEtLS7V69Wq98sorysjI0MGDByVJWVlZGjBggMvVAehOyWW5EUcbbB72hPuMCcDKykpJ0pQpUzo8f+655/TjH/848QUBiAoHdcNrjAlAA9fqAAA8zJgAhFkiXbPEcBcALyEAEXNdXbPEggcAXmLMWaAwQ3fXLHHwMQAvIQARM06uWeLgYwBeQQC6KNkuCHVyzVL44GMAcBtzgC5Jxnkyp9csOX0dAMQTPUAXJOs8mdNrlpy+DgDiiQBMsGSeJysuyFZ+Vrq62uzg06lebnFB11dYAUCiEIAJlszzZKkpPlXMLJSkTiEY/rxiZiH7AQF4AgGYYMk+TzajKF+Vs8cpL6vjMGdeVroqZ48zdn4TQPJhEUyC2TBPNqMoX9MK8zgJBoCnEYAJFp4nO9h4IuI8oE+nekumz5Nx8DEAr2MINMFsnSdLtj2PAMxHD9AF4XmyM/cBmnxBaHeHXyfjnkcA5iMAXZJM82TdBZwkzVu1rdNwb3jPIwtjALiFAHRRMsyThTf1dxVwWQPTutzz6NOpPY/TCvOMDH4AZmMOEL3W06b+kKRjLYEuv9/kPY8mYN4V6B49QPRaT5v6nTJ1z6OXMe8K9IweIHotVsFl2p7H8IIf6dQ/ArzWs0rWs2aBWCMA0Wt9DS4TzwZdu7NO1yx9S3c+Xy1JuvP5al2z9C3PhEoynzULxBoBiF5zcvj1oIFp7f/7zK9JZu15NKFnlcxnzQKxRgCi15xs6l/yvTF6KgnOBjWlZ5XsZ80CscQiGPSJ0039pu95jKZn5ebWFhvOmgVihQBEnznZ1G/6nkdTela2nDULxAIBiJgwPeB6YkrPKjwsPW/VNvmkDiFo4rwrEE/MAQIOmHTbPXcyAs7QAwQcOLNndTov9qyS6axZIF4IQMCh0xf8NBz/e/tzr97ikezD0kBfEYBAFMI9q3c/rtfh3e/q2TkT9a2LhtCzAgzEHCAQpdQUX/tcH8OKgLkIQACAlQhAAICVCEAAgJUIQACAlQhAAICVCEAAgJUIQACAlQhAAICVCEAAgJUIQACAlQhAAICVCEAAgJUIQACAlQhAAICVCEAAgJUIQACAlQhAAICVCEAAgJUIQACAlQhAAICVCEAAgJX6uV2Am9qCIW3d16D6r05oSEa6iguylZric7ssAEACWBuAa3fWadFru1TXeKL9WX5WuipmFmpGUb6LlQEAEsHKIdC399Rr3qptHcJPkg42ntC8Vdu0dmedS5UBABLFygBcVrVXoQjPw88WvbZLbcFIrwAAJAsrA/DQV61dfi0kqa7xhLbua0hcQQCAhLMyAJ2o/+pEzy8CABiLAOzCkIx0t0sAAMSRlQGYm+FXV5sdfDq1GrS4IDuRJQEAEszKACyfdokkdQrB8OcVMwvZDwgASc7KAJxy6RBVzh6nvKyOw5x5WemqnD2OfYAAYAFrN8LPKMrXtMI8ToIBAEtZG4CSlJri09Ujc9wuAwDgAuOGQJ988kldcMEFSk9P11VXXaWtW7e6XRIAwEBGBeBLL72k8vJyVVRUaNu2bbriiis0ffp01dfXu10aAMAwRgXgsmXLdNddd2nu3LkqLCzUU089pYEDB+rZZ591uzQAgGGMmQM8efKkampq9OCDD7Y/S0lJUUlJibZs2RLxe1pbW9Xa+s2xZ01NTZKkQCCgQCAQ34INFm4b2qhrtJEztJMztJMzsW4fYwLw8OHDamtrU25ubofnubm5+vDDDyN+z5IlS7Ro0aJOzzds2KCBAwfGpc5kUlVV5XYJnkcbOUM7OUM7da+lpSWmP8+YAOyNBx98UOXl5e2fNzU1adiwYZo6dapyclj92ZVAIKCqqipNmzZNaWlpbpfjSbSRM7STM7STM0eOHInpzzMmAAcPHqzU1FQdOnSow/NDhw4pLy8v4vf4/X75/f5Oz9PS0vgjc4B26hlt5Azt5Azt1L1Yt40xi2D69++v8ePHa/369e3PgsGg1q9fr6uvvtrFygAAJjKmByhJ5eXlmjNnjiZMmKDi4mKtWLFCzc3Nmjt3rtulAQAMY1QA3nbbbfryyy/10EMP6eDBgxo7dqzWrl3baWEMAAA9MSoAJWn+/PmaP3++22UAAAxnzBwgAACxRAACAKxEAAIArEQAAgCsRAACAKxEAAIArEQAAgCsRAACAKxEAAIArEQAAgCsRAACAKxEAAIArEQAAgCsRAACAKxEAAIArEQAAgCsRAACAKxEAAIArEQAAgCsRAACAKxEAAIArEQAAgCsRAACAKxEAAIArEQAAgCsRAACAKxEAAIArEQAAgCsRAACAKxEAAIArEQAAgCsRAACAKxEAAIArEQAAgCsRAACAKxEAAIArEQAAgCsRAACAKxEAAIArEQAAgCsRAACAKxEAAIArEQAAgCsRAACAKxEAAIArEQAAgCsRAACAKxEAAIArEQAAgCsRAACAKxEAAIArEQAAgCsRAACAKxEAAIArEQAAgCsRAACAKxEAAIArEQAAgCsRAACAKxEAAIArEQAAgCsRAACAKxEAAIArGREAH766af6yU9+ooKCAg0YMEAjR45URUWFTp486XZpAABD9XO7ACc+/PBDBYNBPf3007rooou0c+dO3XXXXWpubtavf/1rt8sDABjIiACcMWOGZsyY0f75hRdeqD179qiyspIABAD0ihEBGEljY6Oys7O7fU1ra6taW1s7fI8kNTQ0xLU20wUCAbW0tOjIkSNKS0tzuxxPoo2coZ2coZ2cCb93h0Kh2PzAkIE++uijUGZmZmjlypXdvq6ioiIkiQ8++OCDjyT6+OSTT2KSJb5QKFZRGr0HHnhAS5cu7fY1u3fv1qhRo9o/P3DggK699lpNmTJF//qv/9rt957ZAzx27JhGjBihzz//XFlZWX0rPok1NTVp2LBh2r9/vzIzM90ux5NoI2doJ2doJ2caGxs1fPhwHT16VOecc06ff56rQ6D/8i//oh//+MfdvubCCy9s/99ffPGFpk6dqkmTJmnlypU9/ny/3y+/39/peVZWFn9kDmRmZtJOPaCNnKGdnKGdnElJic0GBlcD8Nxzz9W5557r6LUHDhzQ1KlTNX78eD333HMxawAAgJ2MWARz4MABTZkyRSNGjNCvf/1rffnll+1fy8vLc7EyAICpjAjAqqoqffzxx/r44491/vnnd/haNFOYfr9fFRUVEYdF8Q3aqWe0kTO0kzO0kzOxbidXF8EAAOAWJtIAAFYiAAEAViIAAQBWIgABAFayJgCffPJJXXDBBUpPT9dVV12lrVu3ul2SpyxZskQTJ05URkaGhgwZoltuuUV79uxxuyzPe+yxx+Tz+VRWVuZ2KZ5z4MABzZ49Wzk5ORowYIDGjBmj999/3+2yPKWtrU0LFy7scNXbL3/5y9iddWmoTZs2aebMmRo6dKh8Pp/+/Oc/d/h6KBTSQw89pPz8fA0YMEAlJSX66KOPov49VgTgSy+9pPLyclVUVGjbtm264oorNH36dNXX17tdmmds3LhRpaWlevfdd1VVVaVAIKDrr79ezc3NbpfmWdXV1Xr66ad1+eWXu12K5xw9elSTJ09WWlqa3nzzTe3atUu/+c1vNGjQILdL85SlS5eqsrJSv/vd77R7924tXbpUv/rVr/TEE0+4XZqrmpubdcUVV+jJJ5+M+PVf/epX+u1vf6unnnpK7733ns466yxNnz5dJ06ciO4XxeREUY8rLi4OlZaWtn/e1tYWGjp0aGjJkiUuVuVt9fX1IUmhjRs3ul2KJ3311Vehiy++OFRVVRW69tprQ/fee6/bJXnK/fffH7rmmmvcLsPzbrzxxtCdd97Z4dn3vve90KxZs1yqyHskhdasWdP+eTAYDOXl5YUef/zx9mfHjh0L+f3+0B/+8IeofnbS9wBPnjypmpoalZSUtD9LSUlRSUmJtmzZ4mJl3ha+OqqnK6dsVVpaqhtvvLHD3xW+8eqrr2rChAm69dZbNWTIEF155ZV65pln3C7LcyZNmqT169dr7969kqTt27dr8+bN+s53vuNyZd61b98+HTx4sMN/e1lZWbrqqquifk834iSYvjh8+LDa2tqUm5vb4Xlubq4+/PBDl6rytmAwqLKyMk2ePFlFRUVul+M5L774orZt26bq6mq3S/Gsv/3tb6qsrFR5ebl+9rOfqbq6Wvfcc4/69++vOXPmuF2eZzzwwANqamrSqFGjlJqaqra2Nj366KOaNWuW26V51sGDByUp4nt6+GtOJX0AInqlpaXauXOnNm/e7HYpnrN//37de++9qqqqUnp6utvleFYwGNSECRO0ePFiSdKVV16pnTt36qmnniIAT/PHP/5R//7v/67Vq1dr9OjRqq2tVVlZmYYOHUo7JUDSD4EOHjxYqampOnToUIfnhw4d4iDtCObPn6/XX39dGzZs6HTuKqSamhrV19dr3Lhx6tevn/r166eNGzfqt7/9rfr166e2tja3S/SE/Px8FRYWdnh22WWX6fPPP3epIm+677779MADD+iHP/yhxowZozvuuEMLFizQkiVL3C7Ns8Lv27F4T0/6AOzfv7/Gjx+v9evXtz8LBoNav369rr76ahcr85ZQKKT58+drzZo1euutt1RQUOB2SZ503XXXaceOHaqtrW3/mDBhgmbNmqXa2lqlpqa6XaInTJ48udM2mr1792rEiBEuVeRNLS0tna52S01NVTAYdKki7ysoKFBeXl6H9/Smpia99957Ub+nWzEEWl5erjlz5mjChAkqLi7WihUr1NzcrLlz57pdmmeUlpZq9erVeuWVV5SRkdE+lp6VlaUBAwa4XJ13ZGRkdJoXPeuss5STk8N86WkWLFigSZMmafHixfrBD36grVu3auXKlY4usrbJzJkz9eijj2r48OEaPXq0PvjgAy1btkx33nmn26W56vjx4/r444/bP9+3b59qa2uVnZ2t4cOHq6ysTI888oguvvhiFRQUaOHChRo6dKhuueWW6H5RjFaqet4TTzwRGj58eKh///6h4uLi0Lvvvut2SZ4iKeLHc88953Zpnsc2iMhee+21UFFRUcjv94dGjRoVWrlypdsleU5TU1Po3nvvDQ0fPjyUnp4euvDCC0M///nPQ62trW6X5qoNGzZEfD+aM2dOKBQ6tRVi4cKFodzc3JDf7w9dd911oT179kT9e7gOCQBgpaSfAwQAIBICEABgJQIQAGAlAhAAYCUCEABgJQIQAGAlAhAAYCUCEABgJQIQAGAlAhAAYCUCEDDcl19+qby8vPa79yTpnXfeUf/+/TucmA+gI84CBZLAG2+8oVtuuUXvvPOOLr30Uo0dO1Y333yzli1b5nZpgGcRgECSKC0t1bp16zRhwgTt2LFD1dXV8vv9bpcFeBYBCCSJv//97yoqKtL+/ftVU1OjMWPGuF0S4GnMAQJJ4pNPPtEXX3yhYDCoTz/91O1yAM+jBwgkgZMnT6q4uFhjx47VpZdeqhUrVmjHjh0aMmSI26UBnkUAAkngvvvu05/+9Cdt375dZ599tq699lplZWXp9ddfd7s0wLMYAgUM9/bbb2vFihV64YUXlJmZqZSUFL3wwgv6z//8T1VWVrpdHuBZ9AABAFaiBwgAsBIBCACwEgEIALASAQgAsBIBCACwEgEIALASAQgAsBIBCACwEgEIALASAQgAsBIBCACwEgEIALDS/wcNGs3OYukMyQAAAABJRU5ErkJggg=="
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 绘制散点图\n",
    "fig, ax = plt.subplots()\n",
    "ax.scatter(x_data, y_data)\n",
    "ax.set_xlabel('x');\n",
    "ax.set_ylabel('y')\n",
    "ax.set_aspect('equal', adjustable='box')\n",
    "ax.set_xlim(0, 10);\n",
    "ax.set_ylim(-2, 8)\n",
    "ax.grid()"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "start_time": "2024-07-02T22:08:21.887356Z",
     "end_time": "2024-07-02T22:08:22.001442Z"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "outputs": [],
   "source": [
    "# 一元线性回归\n",
    "slope, intercept = statistics.linear_regression(x_data, y_data)"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "start_time": "2024-07-02T22:08:33.108163Z",
     "end_time": "2024-07-02T22:08:33.141764Z"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "outputs": [],
   "source": [
    "# 生成一个等差数列\n",
    "start, end, step = 0, 10, 0.5\n",
    "x_array = []\n",
    "x_i = start\n",
    "\n",
    "while x_i <= end:\n",
    "    x_array.append(x_i)\n",
    "    x_i += step"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "start_time": "2024-07-02T22:08:48.713548Z",
     "end_time": "2024-07-02T22:08:48.729248Z"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "outputs": [],
   "source": [
    "# 计算x_array预测值\n",
    "y_array_predicted = [slope * x_i + intercept for x_i in x_array]"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "start_time": "2024-07-02T22:09:15.086445Z",
     "end_time": "2024-07-02T22:09:15.118506Z"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "outputs": [
    {
     "data": {
      "text/plain": "<Figure size 640x480 with 1 Axes>",
      "image/png": "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"
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 可视化一元线性回归直线\n",
    "fig, ax = plt.subplots()\n",
    "ax.scatter(x_data, y_data)\n",
    "ax.plot(x_array, y_array_predicted, color='r')\n",
    "ax.set_xlabel('x');\n",
    "ax.set_ylabel('y')\n",
    "ax.set_aspect('equal', adjustable='box')\n",
    "ax.set_xlim(0, 10);\n",
    "ax.set_ylim(-2, 8)\n",
    "ax.grid()"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "start_time": "2024-07-02T22:09:29.372919Z",
     "end_time": "2024-07-02T22:09:29.498301Z"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "outputs": [],
   "source": [],
   "metadata": {
    "collapsed": false
   }
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2",
   "version": "2.7.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 0
}
